Object pose estimation in visual data

ABSTRACT

The pose of an object may be estimated based on fiducial points identified in a visual representation of the object. Each fiducial point may correspond with a component of the object, and may be associated with a first location in an image of the object and a second location in a 3D coordinate pace. A 3D skeleton of the object may be determined by connecting the locations in the 3D space, and the object&#39;s pose may be determined based on the 3D skeleton.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of and claims priority to U.S.patent application Ser. No. 17/502,579, titled “OBJECT POSE ESTIMATIONIN VISUAL DATA”, filed Oct. 15, 2021, by Holzer et al., which is acontinuation of and claims priority to U.S. patent application Ser. No.16/518,570 now U.S. Pat. No. 11,176,704, titled “OBJECT POSE ESTIMATIONIN VISUAL DATA”, filed Jul. 22, 2019, by Holzer et al., which claimspriority under 35 U.S.C. 120 to U.S. Provisional Patent Application No.62,795,440, titled “AUTOMATIC OBJECT ORIENTATION ESTIMATION IN VISUALDATA”, filed Jan. 22, 2019, by Holzer et al, and which also claimspriority under 35 U.S.C. 120 to U.S. Provisional Patent Application No.62,795,434, titled “EXTRACTION OF STANDARDIZED IMAGES FROM A SINGLE-VIEWOR MULTI-VIEW CAPTURE”, filed Jan. 22, 2019, by Holzer et al., all ofwhich are hereby incorporated by reference in their entirety and for allpurposes.

DESCRIPTION OF RELATED ART

Visual digital media content is commonly used to analyze objects.However, images of an object may be captured from various viewpoints.Existing techniques can often identify an object represented in animage. Nevertheless, current techniques for determining a pose of theobject relative to the camera viewpoint are ineffective. Accordingly,improved techniques determining the pose of the object relative to thecamera viewpoint are desired.

Overview

Provided are various mechanisms and processes relating to the processingof visual media data. According to various embodiments, techniques andmechanisms described herein facilitate pose identification. A pluralityof fiducial points in a visual representation of an object may beidentified. The visual representation may include one or more images ofthe object. Each fiducial point may have a respective first location inone or more of the images and may correspond with a respective componentof the object. A second location in a three-dimensional (3D) space maybe determined for each fiducial point based on the respective locationassociated with the fiducial point. A 3D skeleton of the object may bedetermined by connecting the respective second locations in the 3D spacevia a processor. A pose of the object may be determined based on the 3Dskeleton and may be stored the pose on a storage device.

In particular embodiments, the pose may include a roll value, a pitchvalue, and a yaw value for the object. Alternately, or additionally, thepose may include three translation values identifying a location of theobject in the three-dimensional space.

In particular embodiments, the object may be a vehicle, and the 3Dskeleton may include a door and a windshield. The fiducial points mayinclude a headlight portion, a rear-view mirror portion, and a wheelportion.

In particular embodiments, the one or more images includes a pluralityof images each captured from a different viewpoint, and the pose of theobject includes a respective object pose for each of the plurality ofimages. The visual representation may be a multi-view captureconstructed based on inertial measurement unit (IMU) data and navigablein three dimensions.

In particular embodiments, the 3D skeleton may be determined at least inpart by applying a neural network trained to predict 3D coordinates ofvisible portions of objects represented in two-dimensional (2D) images.The fiducial points may be identified at least in part via a neuralnetwork trained to segment objects into components and to classifyobject components.

In some implementations, an object type may be determined based on thevisual representation. A pre-determined 3D mesh corresponding with theobject type may then be pre-determined. The respective second locationsmay be determined at least in part based on positioning each fiducialpoint within the pre-determined 3D mesh.

These and other embodiments are described further below with referenceto the figures.

BRIEF DESCRIPTION OF THE DRAWINGS

The included drawings are for illustrative purposes and serve only toprovide examples of possible structures and operations for the disclosedinventive systems, apparatus, methods and computer program products forimage processing. These drawings in no way limit any changes in form anddetail that may be made by one skilled in the art without departing fromthe spirit and scope of the disclosed implementations.

FIG. 1 illustrates a first method for determining object pose, performedin accordance with one or more embodiments.

FIG. 2 illustrates a second method for determining object pose,performed in accordance with one or more embodiments.

FIG. 3 illustrates an example of a surround view acquisition systemconfigured in accordance with various embodiment.

FIG. 4 illustrates an example of a device capturing multiple views of anobject of interest.

FIG. 5 illustrates an example of a device capturing views of an objectof interest to create a multi-view media representation to which afilter may be applied.

FIG. 6 illustrates a particular example of a computer system configuredin accordance with various embodiment.

FIG. 7 illustrates a method for standardized image view identification,performed in accordance with one or more embodiments.

FIG. 8 illustrates an example of an object component identificationprocedure, performed in accordance with one or more embodiments.

DETAILED DESCRIPTION

According to various embodiments, techniques and mechanisms describedherein facilitate the identification of the pose of an objectrepresented in visual data. The pose of an object describes how anobject is placed in the three-dimensional (3D) space it occupies. Anobject's pose may be determined with respect to a viewpoint, such as acamera viewpoint. The object's pose may include three dimensions ofinformation characterizing the object's rotation with respect to thecamera viewpoint. Alternately, or additionally, an object's pose mayinclude three dimensions of information characterizing the object'stranslation with respect to the camera viewpoint. The object's pose maybe useful for describing the rotation required to move the object from areference perspective to a different perspective. It is also useful toorient visualizations of different objects of the same typeconsistently.

According to various embodiments, techniques and mechanisms describedherein provide for a pose determination system. The system includes apose determination application which in some embodiments may beimplemented on a mobile computing device running an operating systemsuch as iOS or Android. The pose determination application may provide asimple experience for users to capture the pose of an object. The posedetermination application may include an upload process, which may runin the background. In some implementations, the pose data for an objectmay include information such as the object's roll, pitch, yaw,elevation, angular position, height, translation (e.g., in threedimensions), and/or attitude. Alternately or additionally, pose data foran object may include information about the azimuth angle of the object,which may include information about the horizontal angle of the objectmeasured from a fixed reference plane or established base directionline.

According to various embodiments, the pose determination proceduresdescribed herein may provide improved techniques for determining thepose of an object from visual data. The pose of an object may beobtained from a single image. Alternately, or additionally, the pose ofan object may be obtained from a multi-view capture or a video.

For the purpose of illustration, several applications of posedetermination are described herein in relation to images of vehicles.For example, in the case of a vehicle, the pose of the vehicle may beused to facilitate vehicle identification. Identifying a designatedvehicle, and determining visual information such as its condition ordamage sustained, is more easily accomplished if the vehicle's pose isknown. A user may walk around the vehicle to inspect it from multipleviewpoints. A user may then manually annotate on a single image ormulti-view image the location of the damage present on the rentedvehicle. For instance, pose may be used to identify a vehicle orcharacterize damage to a vehicle as part of a vehicle rental or purchaseprocess.

As another example, the pose of a vehicle can be used in visual tagging,where the user clicks on a single image to set a tag and the same tagthen appears on other captured visual images of the vehicle or viceversa. In this way, the pose of the vehicle can also be used to positiona tag in an image from one viewpoint of the vehicle, rotate the image toanother viewpoint of the vehicle and project the tag to that viewpoint,and then project it back to all other captured viewpoints of the vehiclewhere it would be visible. Such an approach allows for robust tagging ofa 360-degree object visualization, for example to facilitate the rentalor purchase of the vehicle.

As yet another example, a pose of a vehicle may be used to facilitatevisual tagging with persistent tag locations across different locationsacross different object visualizations. For example, in the case of avehicle, a user such as a vehicle dealership agent may wish to alwayslocate tags at certain locations on a vehicle, such as one of the wheelsor at the engine. In this case, the user can specify these general tagsin an image from one viewpoint of the vehicle and then captures atdifferent poses may automatically receive a tag at that location.Alternately, a user can specify these general tags in a 360-degreereference view, which may be mapped back onto images taken from variousviewpoints of the vehicle.

As still another example, a pose of a vehicle may be used to facilitatethe identification of standard views. Additional details regarding theidentification of standard views are discussed with respect to FIGS. 7and 8 .

FIG. 1 illustrates a method 100 of determining a pose of an object,performed in accordance with one or more embodiments. The method 100 maybe performed on any suitable computing device. For example, the method100 may be performed on a mobile computing device such as a smart phone.Alternately or additionally, the method 100 may be performed on a remoteserver in communication with a mobile computing device.

A request to determine a pose of an object is received at 102. Accordingto various embodiments, the request may be received at a user interface.For example, the request may be received via an application at a mobilecomputing device. As another example, the request may be received at auser interface at a laptop.

At 104, an image of the object is selected for analysis. According tovarious embodiments, the image may be a single two-dimensional image ofthe object. Alternately or additionally, the image may be one of aseries of two-dimensional images of the object captured from differentviewpoints. In some implementations, the image may be a single frame ofa video stream of the object.

In some embodiments, the image may be a 360-degree multi-view capture ofthe object. Alternately, the image may include a view that has less than360-degree coverage. Additional details regarding multi-view datacollection, multi-view representation construction, and other featuresare discussed in co-pending and commonly assigned U.S. patentapplication Ser. No. 15/934,624, “Conversion of an InteractiveMulti-view Image Data Set into a Video”, by Holzer et al., filed Mar.23, 2018, which is hereby incorporated by reference in its entirety andfor all purposes.

Optionally, a bounding box for the object is determined at 106.According to various embodiments, a bounding box for the object mayinclude coordinates of a rectangular or non-rectangular border thatencloses the object in the selected image. The bounding box may bedetermined by a neural network. For example, a neural network may betrained to determine the coordinates of the visible object pixels in animage of the object. The neural network may facilitate the determinationof the pixel coordinates and the width, height, or other characteristicsof the bounding box enclosing the object. Alternately or additionally,the bounding box may be determined by a different type of algorithm. Insome configurations, the bounding box may be determined at least in partbased on user input. For example, the bounding box may be determined bya user super-imposing a border on the image to enclose the object. Inanother example, the bounding box may be determined by the user tappingon the object with an algorithm automatically estimating the extent ofthe bounding based on the selection. In yet another example, the usermay select points or regions in the foreground and background, and analgorithm automatically separates both to estimate the extent of acorresponding bounding box.

At 108, an estimated object orientation is determined. According tovarious embodiments, the estimated object orientation may be determinedby a neural network. For example, a neural network may be trained todetermine the estimated object orientation through an analysis of theobject from one or more images of an object. The estimated objectorientation may include estimates about an object's roll, elevation,angular position, attitude, and azimuth angle.

An estimated camera location is identified at 110. According to variousembodiments, camera location may be estimated from data collected froman inertial measurement unit (IMU). In some implementations, the IMU maybe associated with a mobile computing device, such as a smartphone. Forexample, a mobile computing device may include sensors such as a cameracapable of capturing visual data such as an image or video stream. Amobile computing device may also include an accelerometer, a gyroscope,and other such sensors capable of capturing IMU data.

In some implementations, IMU data may be used to identify poseinformation associated with the camera. For example, the IMU data mayindicate that the image was captured with a camera located at aparticular height and angle relative to the object and/or ground.Alternatively, or additionally, the pose estimation might be done usinga pose estimation algorithm based on image data. In some configurations,the pose estimation method might also consider the available IMU data.

In particular embodiments, an offset between the estimated object poseand the estimated camera location may be determined. According tovarious embodiments, the determination may be made at least in part byidentifying a difference between the two values. Alternately, oradditionally, the determination may be made at least in part by refiningthe object pose based on additional information characterizing theposition and angle of the camera.

A determination is made at 112 as to whether to select an additionalimage of the object for analysis. In some implementations, additionalimages may be selected until all available images have been analyzed.For example, each image associated with a multi-view capture may beanalyzed. If multiple images have been processed, then a combined offsetmay be to be calculated. For example, the offset can be averaged fromthe results obtained from multiple images. In another example, a robustmethod for estimating the final offset from multiple computed offsetsmight be used, for instance to handle outliers such as an inaccuratepose estimation for certain images.

In some embodiments, the determination made at 112 may be made at leastin part automatically. For example, the estimated object pose procedureat 108 may attempt to estimate a pose for the object, but may fail dueto incomplete image information or other information. A determinationmay be automatically made to prompt the user to capture or uploadadditional images of the object.

In some implementations, the determination made at 112 may be made atleast in part as a request by a user. For example, a user may beprompted to select an additional image for analysis. Alternately oradditionally, a user may be prompted to review an estimated object pose,and a user may review the estimated object pose and may elect to analyzeadditional images of the object in order to improve the accuracy orquality of the estimated object pose. In some implementations, everyN-th frame of the multi-view capture might be processed.

At 114, the pose estimation information is stored. According to variousembodiments, storing the pose estimation information may involve storingone or more pose values for each of the images analyzed in FIG. 1 . Forexample, pose information may be stored to supplement a multi-viewcapture.

In some implementations, the pose estimation may be stored on a storagedevice. Alternately, or additionally, the pose estimation may betransmitted to a remote location via a network.

FIG. 2 illustrates a method for determining an object pose based on 3Ddata. The method 200 may be performed on any suitable computing device.For example, the method 200 may be performed on a mobile computingdevice such as a smart phone. Alternately or additionally, the method200 may be performed on a remote server in communication with a mobilecomputing device.

A request to determine a pose of an object is received at 202. In someimplementations, the request may be received at a user interface. At204, image information for the object is captured. In someimplementations, the image information may include a video or image setof the object is captured from multiple perspectives. The imageinformation may include a 360-degree view of the object. Alternately,the image information may include a view that has less than 360-degreecoverage.

An object is identified for analysis at 206. In some embodiments, theobject may be identified via an algorithm. For example, the object maybe identified via an image recognition algorithm. As another example,the object may be identified via a bounding box algorithm.

In some implementations, the object may be identified based at least inpart on user input. For instance, a user may identify the object as avehicle via a user interface component such as a drop-down menu.

At 208, one or more points of reference are identified on the object.According to various embodiments, points of reference may include one ormore fiducial points on the object. Fiducial points are identifiablelocations on objects of a particular type that in general should bepresent on all or nearly all objects of that type and that provide anindication as to the object's pose. For example, in the case of avehicle, fiducial points may include but are not limited to thevehicle's headlights, rearview mirror, and wheels.

In some implementations, the reference points may be identified via analgorithm, such as an image recognition algorithm. Alternately oradditionally, reference points may be identified in part through userinput.

A sparse 3D mesh of an object is determined at 210. According to variousembodiments, the sparse 3D mesh may be determined by using the fiducialpoints identified in operation 208 as vertices of the mesh. For example,each face of the mesh may approximate the object shape with a planarsurface.

At 212, a 3D representation of the object is determined. According tovarious embodiments, the 3D representation may be constructed byelevating the fiducial points to 3D space and constructing a sparse 3Dmesh from their locations. Alternately, or additionally, the object'spose may be inferred based on cues such as surface normal of the facesof the mesh, visibility states of the fidicual points in a plurality ofimage, or other such features.

In some embodiments, the elevation into 3D space might be done usingtriangulation. Alternately, or additionally, a depth map might becomputed for each frame which is then used to elevate the 2D points into3D.

According to various embodiments, the 3D representation may be a 3Dskeleton. For example, 2D skeleton detection may be performed on everyframe using a machine learning procedure. As another example, 3D camerapose estimation may be performed to determine a location and angle ofthe camera with respect to the object for a particular frame. As yetanother example, a 3D skeleton may be reconstructed from one or more 2Dskeletons and/or one or more 3D models. Additional details regardingskeleton detection are discussed in co-pending and commonly assignedU.S. patent application Ser. No. 15/427,026, titled “Skeleton Detectionand Tracking via Client-server Communication” by Holzer et al, filedFeb. 7, 2017, which is hereby incorporated by reference in its entiretyand for all purposes.

According to various embodiments, the 3D reconstruction of the objectsurface may include one or more of a variety of reconstructionprocedures. For example, dominant axes may be computed to estimate pose.As another example, an object model such as a vehicle model that has areference pose may be fit into a 3D reconstructed model based on theinput data. As another example, one or more parts of a 3D reconstructedmodel may be classified to estimate a pose of the object.

Estimated pose for the object is determined at 214. According to variousembodiments, the estimated object pose may be determined by a neuralnetwork. For example, a neural network may be trained to determine theestimated object pose through an analysis of the object from one or moreimages of an object. The estimated object pose may include estimatesabout an object's dominant axes, roll, elevation, angular position,attitude, and azimuth angle.

According to various embodiments, the object pose may be estimated basedon the sparse 3D mesh determined at operation 210 and/or the 3D skeletondetermined at operation 212. For example, the fiducial points identifiedin operation 208 facilitate the triangulation of fiducial points of theobject in 3D space to help determine the azimuth, roll, elevation, andaxes of the designated object. The 3D skeleton may facilitate theinference of the object's pose based on cues such as, but not limitedto, the surface normals of the faces of the mesh, and the visibilitystates of the fiducial points in the images of the object, andinformation about the three axes of the 3D skeleton model determined atoperation 212.

In some embodiments, the estimated object pose may be determined basedon a 3D reconstruction of the object. For example, the object pose maybe estimated based on the dominant axes of the 3D reconstruction of anobject. As another example, the pose for a designated object may beestimated by incorporating the pose of a known reference object withreference pose with a 3D reconstructed model of the designated object.As yet another example, parts of the 3D reconstructed model may beidentified to determine pose of the object. For example, in the case ofa vehicle, the license plate may be identified as a reference pointrelative to the rearview mirror to estimate the pose of the vehicle.

At 216, the pose estimation information is stored. In someimplementations, the pose estimation may be stored on a storage device.Alternately, or additionally, the pose estimation may be transmitted toa remote location via a network.

According to various embodiments, the object pose may be estimated basedon the determination of specific reference points on the object. Forexample, in the case of a vehicle, a specific reference point such asthe license plate may be detected in one or more images of a multi-viewimage set. Based on the location of the license plate in the imagerelative to other reference points, such as the vehicle's headlights,the pose of the object may be inferred.

In some implementations, this determination may be performed on a 3Dmodel of the object. For example, for a 3D model of a vehicle, thelocation of the license plate may be used to estimate global angle forthe vehicle. Alternately, or additionally, the trajectory of a featuresuch as a license plate may be fit to an ellipse in image space, whichcorresponds to a sphere around the vehicle in 3d space, and the locationon the ellipse is used to estimate the vehicle's pose.

In some embodiments, the estimated object pose may be determined from asingle image. In some implementations, the object may not be visiblefrom all angles or perspectives from a single image, or an image may notsupply a minimum number of reference points visible to determine asparse 3D mesh capable of facilitating the determination of a 3Dskeleton of the object. In such situations, a neural network may betrained to predict coordinates of the visible object pixels in atop-down view of the object.

In particular embodiments, once the locations are mapped, the points maybe lifted to 3D based on a predefined correspondence between thetop-down view and a 3D mesh. Then, the transformation between the imagepoints and the 3D mesh may be used to obtain the pose of the vehicle.Alternately, or additionally, the 3D mesh may also be predicted by aneural network, with the orientation determined by joint reasoning.

According to various embodiments, the estimated object pose may bedetermined from a single image via top-down view mapping. For example, anetwork may be trained that takes an image of an object such as avehicle as input and maps every point of the image onto a top-down view.Based on the distribution of the points on the top-down view, the systemmay then draw an inference about the pose of the object with respect tothe camera.

According to various embodiments, pose may be estimated from a singleimage using a component classifier. For example, a network may betrained to identify object components such as car parts. For instance,each pixel of the image may be classified as belonging to an objectcomponent or as part of the background. The visible object componentsmay then be used to estimate a pose of the object.

According to various embodiments, the object pose may be directlyestimated from the detected 2D skeleton by considering which joints ofthe 2D skeleton are detected (i.e. are visible).

In some implementations, the estimated object pose may be determinedfrom a single image via using a neural network trained directly todetermine an N degree-of-freedom pose. For example, a 3degree-of-freedom pose may include azimuth, roll, and elevation. Asanother example, a 6 degree-of-freedom pose may include 3 degrees offreedom for orientation and 3 degrees of freedom for translation. Asanother example, any combination of degrees of freedom may be used. Forinstance, a 2 degree-of-freedom pose may include 1 degree-of-freedom fororientation and 1 degree-of-freedom for the distance between the cameraand the object.

In particular embodiments, any of the approaches involving a singleimage may be applied on a multi-view data set and the results combined(e.g., averaged) to improve the overall results. In general, anycombination of the methods described herein may be used to increaserobustness and/or provide a failsafe. For example, pose may beindependent estimated using three different methods, and then theresults cross-checked.

With reference to FIG. 3 , shown is an example of a surround viewacquisition system that can be used to generate a multi-view interactivedigital media representation that can be used for the application offilters or visual effects. A multi-view interactive digital mediarepresentation includes much more information than a single image.Whereas a single image may include information such as a grid of colorpixels and the date/time of capture, a multi-view interactive digitalmedia representation includes information such as such as grids of colorpixels, date/time of capture, spatial information (flow/3D), location,and inertial measurement unit information (IMU) (i.e., compass, gravity,orientation). A multi-view interactive digital media representationbrings focus to an object of interest because it provides separationbetween the foreground and background. In addition, a multi-viewinteractive digital media representation provides more information aboutthe scale, context, and shape of the object of interest. Furthermore, byproviding multiple views, aspects of the object that are not visiblefrom a single view can be provided in a multi-view interactive digitalmedia representation.

In the present example embodiment, the surround view acquisition system300 is depicted in a flow sequence that can be used to generate asurround view. According to various embodiments, the data used togenerate a surround view can come from a variety of sources. Inparticular, data such as, but not limited to two-dimensional (2D) images304 can be used to generate a surround view. These 2D images can includecolor image data streams such as multiple image sequences, video data,etc., or multiple images in any of various formats for images, dependingon the application. Another source of data that can be used to generatea surround view includes location information 306. This locationinformation 306 can be obtained from sources such as accelerometers,gyroscopes, magnetometers, GPS, Wi-Fi, IMU-like systems (InertialMeasurement Unit systems), and the like. Yet another source of data thatcan be used to generate a surround view can include depth images 308.These depth images can include depth, 3D, or disparity image datastreams, and the like, and can be captured by devices such as, but notlimited to, stereo cameras, time-of-flight cameras, three-dimensionalcameras, and the like.

In the present example embodiment, the data can then be fused togetherat sensor fusion block 310. In some embodiments, a surround view can begenerated a combination of data that includes both 2D images 304 andlocation information 306, without any depth images 308 provided. Inother embodiments, depth images 308 and location information 306 can beused together at sensor fusion block 310. Various combinations of imagedata can be used with location information at 306, depending on theapplication and available data.

In the present example embodiment, the data that has been fused togetherat sensor fusion block 310 is then used for content modeling 312 andcontext modeling 314. During this process, the subject matter featuredin the images can be separated into content and context. The content canbe delineated as the object of interest and the context can bedelineated as the scenery surrounding the object of interest. Accordingto various embodiments, the content can be a three-dimensional model,depicting an object of interest, although the content can be atwo-dimensional image in some embodiments. Furthermore, in someembodiments, the context can be a two-dimensional model depicting thescenery surrounding the object of interest. Although in many examplesthe context can provide two-dimensional views of the scenery surroundingthe object of interest, the context can also include three-dimensionalaspects in some embodiments. For instance, the context can be depictedas a “flat” image along a cylindrical “canvas,” such that the “flat”image appears on the surface of a cylinder. In addition, some examplesmay include three-dimensional context models, such as when some objectsare identified in the surrounding scenery as three-dimensional objects.According to various embodiments, the models provided by contentmodeling 312 and context modeling 314 can be generated by combining theimage and location information data. Content modeling may includeoperations such as object pose determination.

According to various embodiments, context and content of a surround vieware determined based on a specified object of interest. In someexamples, an object of interest is automatically chosen based onprocessing of the image and location information data. For instance, ifa dominant object is detected in a series of images, this object can beselected as the content. In other examples, a user specified target 302can be chosen. It should be noted, however, that a surround view can begenerated without a user specified target in some applications.

In the present example embodiment, one or more enhancement algorithmscan be applied at enhancement algorithm(s) block 316. In particularexample embodiments, various algorithms can be employed during captureof surround view data, regardless of the type of capture mode employed.These algorithms can be used to enhance the user experience. Forinstance, automatic frame selection, stabilization, view interpolation,filters, and/or compression can be used during capture of surround viewdata. In some examples, these enhancement algorithms can be applied toimage data after acquisition of the data. In other examples, theseenhancement algorithms can be applied to image data during capture ofsurround view data.

According to particular example embodiments, automatic frame selectioncan be used to create a more enjoyable surround view. Specifically,frames are automatically selected so that the transition between themwill be smoother or more even. This automatic frame selection canincorporate blur- and overexposure-detection in some applications, aswell as more uniformly sampling poses such that they are more evenlydistributed.

In some example embodiments, stabilization can be used for a surroundview in a manner similar to that used for video. In particular, keyframes in a surround view can be stabilized to produce improvements suchas smoother transitions, improved/enhanced focus on the content, etc.However, unlike video, there are many additional sources ofstabilization for a surround view, such as by using IMU information,depth information, computer vision techniques, direct selection of anarea to be stabilized, face detection, and the like.

For instance, IMU information can be very helpful for stabilization. Inparticular, IMU information provides an estimate, although sometimes arough or noisy estimate, of the camera tremor that may occur duringimage capture. This estimate can be used to remove, cancel, and/orreduce the effects of such camera tremor.

In some examples, depth information, if available, can be used toprovide stabilization for a surround view. Because points of interest ina surround view are three-dimensional, rather than two-dimensional,these points of interest are more constrained and tracking/matching ofthese points is simplified as the search space reduces. Furthermore,descriptors for points of interest can use both color and depthinformation and therefore, become more discriminative. In addition,automatic or semi-automatic content selection can be easier to providewith depth information. For instance, when a user selects a particularpixel of an image, this selection can be expanded to fill the entiresurface that touches it. Furthermore, content can also be selectedautomatically by using a foreground/background differentiation based ondepth. In various examples, the content can stay relativelystable/visible even when the context changes.

According to various examples, computer vision techniques can also beused to provide stabilization for surround views. For instance, keypoints can be detected and tracked. However, in certain scenes, such asa dynamic scene or static scene with parallax, no simple warp existsthat can stabilize everything. Consequently, there is a trade-off inwhich certain aspects of the scene receive more attention tostabilization and other aspects of the scene receive less attention.Because a surround view is often focused on a particular object ofinterest, a surround view can be content-weighted so that the object ofinterest is maximally stabilized in some examples.

Another way to improve stabilization in a surround view includes directselection of a region of a screen. For instance, if a user taps to focuson a region of a screen, then records a convex surround view, the areathat was tapped can be maximally stabilized. This allows stabilizationalgorithms to be focused on a particular area or object of interest.

In some examples, face detection can be used to provide stabilization.For instance, when recording with a front-facing camera, it is oftenlikely that the user is the object of interest in the scene. Thus, facedetection can be used to weight stabilization about that region. Whenface detection is precise enough, facial features themselves (such aseyes, nose, mouth) can be used as areas to stabilize, rather than usinggeneric key points.

According to various examples, view interpolation can be used to improvethe viewing experience. In particular, to avoid sudden “jumps” betweenstabilized frames, synthetic, intermediate views can be rendered on thefly. This can be informed by content-weighted key point tracks and IMUinformation as described above, as well as by denser pixel-to-pixelmatches. If depth information is available, fewer artifacts resultingfrom mismatched pixels may occur, thereby simplifying the process. Asdescribed above, view interpolation can be applied during capture of asurround view in some embodiments. In other embodiments, viewinterpolation can be applied during surround view generation.

In some examples, filters can also be used during capture or generationof a surround view to enhance the viewing experience. Just as manypopular photo sharing services provide aesthetic filters that can beapplied to static, two-dimensional images, aesthetic filters cansimilarly be applied to surround images. However, because a surroundview representation is more expressive than a two-dimensional image, andthree-dimensional information is available in a surround view, thesefilters can be extended to include effects that are ill-defined in twodimensional photos. For instance, in a surround view, motion blur can beadded to the background (i.e. context) while the content remains crisp.In another example, a drop-shadow can be added to the object of interestin a surround view.

In various examples, compression can also be used as an enhancementalgorithm 316. In particular, compression can be used to enhanceuser-experience by reducing data upload and download costs. Becausesurround views use spatial information, far less data can be sent for asurround view than a typical video, while maintaining desired qualitiesof the surround view. Specifically, the IMU, key point tracks, and userinput, combined with the view interpolation described above, can allreduce the amount of data that must be transferred to and from a deviceduring upload or download of a surround view. For instance, if an objectof interest can be properly identified, a variable compression style canbe chosen for the content and context. This variable compression stylecan include lower quality resolution for background information (i.e.context) and higher quality resolution for foreground information (i.e.content) in some examples. In such examples, the amount of datatransmitted can be reduced by sacrificing some of the context quality,while maintaining a desired level of quality for the content.

In the present embodiment, a surround view 318 is generated after anyenhancement algorithms are applied. The surround view can provide amulti-view interactive digital media representation. In variousexamples, the surround view can include three-dimensional model of thecontent and a two-dimensional model of the context. However, in someexamples, the context can represent a “flat” view of the scenery orbackground as projected along a surface, such as a cylindrical orother-shaped surface, such that the context is not purelytwo-dimensional. In yet other examples, the context can includethree-dimensional aspects.

According to various embodiments, surround views provide numerousadvantages over traditional two-dimensional images or videos. Some ofthese advantages include: the ability to cope with moving scenery, amoving acquisition device, or both; the ability to model parts of thescene in three-dimensions; the ability to remove unnecessary, redundantinformation and reduce the memory footprint of the output dataset; theability to distinguish between content and context; the ability to usethe distinction between content and context for improvements in theuser-experience; the ability to use the distinction between content andcontext for improvements in memory footprint (an example would be highquality compression of content and low quality compression of context);the ability to associate special feature descriptors with surround viewsthat allow the surround views to be indexed with a high degree ofefficiency and accuracy; and the ability of the user to interact andchange the viewpoint of the surround view. In particular exampleembodiments, the characteristics described above can be incorporatednatively in the surround view representation, and provide the capabilityfor use in various applications. For instance, surround views can beused in applying filters or visual effects.

According to various example embodiments, once a surround view 318 isgenerated, user feedback for acquisition 320 of additional image datacan be provided. In particular, if a surround view is determined to needadditional views to provide a more accurate model of the content orcontext, a user may be prompted to provide additional views. Once theseadditional views are received by the surround view acquisition system300, these additional views can be processed by the system 300 andincorporated into the surround view.

With reference to FIG. 4 , shown is an example of a device capturingmultiple views of an object of interest from different locations. Thecapture device is indicated as camera 412, and moves from location 422to location 424 and from location 424 to location 426. The multiplecamera views 402, 404, and 406 captured by camera 412 can be fusedtogether into a three-dimensional (3D) model. According to variousembodiments, multiple images can be captured from various viewpoints andfused together to provide a multi-view digital media representation.

In the present example embodiment, camera 412 moves to locations 422,424, and 426, respectively, along paths 428 and 430, in proximity to anobject of interest 408. Scenery can surround the object of interest 408such as object 408. Views 402, 404, and 406 are captured by camera 412from locations 422, 424, and 426 and include overlapping subject matter.Specifically, each view 402, 404, and 406 includes the object ofinterest 408 and varying degrees of visibility of the scenerysurrounding the object 408. For instance, view 402 includes a view ofthe object of interest 408 in front of the cylinder that is part of thescenery surrounding the object 408. View 404 shows the object ofinterest 408 to one side of the cylinder, and view 406 shows the objectof interest without any view of the cylinder.

In the present example embodiment, the various views 402, 404, and 406along with their associated locations 422, 424, and 426, respectively,provide a rich source of information about object of interest 408 andthe surrounding context that can be used to produce a multi-view digitalmedia representation, such as a surround view. For instance, whenanalyzed together, the various views 402, 404, and 406 provideinformation about different sides of the object of interest and therelationship between the object of interest and the scenery. These viewsalso provide information about the relative size and scale of the objectof interest in relation to the scenery. Furthermore, views fromdifferent sides of the object provide information about the shape andtexture of the object. According to various embodiments, thisinformation can be used to parse out the object of interest 408 intocontent and the scenery 410 as the context. In particular examples, thecontent can then be used for applying filters.

With reference to FIG. 5 , shown is an example of a device capturingviews of an object of interest. During a filter session, multiple viewsof the object 408 may be captured by the device 570 from differentlocations. In the present example, data is acquired when a user taps arecord button 580 on capture device 570 to begin recording images of theobject.

The user moves 428 the capture device 570 from location 422 to location424 along path 428 and from location 424 to location 426 along path 430.As described in more detail throughout this application, filtering canbe provided at the device 570, and prompts for the user to captureparticular views can be provided during the session. In particular, thesystem can prompt the user to move the device 570 in a particulardirection or may prompt the user to provide additional information. Asthe user records different views of the object, filtering suggestionsmay be reiteratively refined to provide accurate results. The user maychoose to stop recording by tapping the record button 580 again. Inother examples, the user can tap and hold the record button during thesession, and release to stop recording. In the present embodiment, therecording captures a series of images that can be used to generate amulti-view digital media representation that can be for filtering eitherin real-time or after-the-fact.

In some implementations, applying a filter to a multi-view digital mediarepresentation may involve processing a succession of images taken fromdifferent perspectives. In such an example, the client device mayperform low-level processing such as two-dimensional analysis ofindividual images. The server, on the other hand, may perform high-levelprocessing such as combining different individual images to produce athree-dimensional model of an object that is the subject of a multi-viewvideo.

With reference to FIG. 6 , shown is a particular example of a computersystem that can be used to implement particular examples of the presentinvention. For instance, the computer system 600 can be used to mapviews between images according to various embodiments described above.The computer system 600 may be, for example, a server, a client machine,a mobile phone, a laptop, a desktop computer, or any other suitabledevice. According to particular example embodiments, a system 600suitable for implementing particular embodiments of the presentinvention includes a processor 601, a memory 603, a communicationsinterface 611, and a bus 615 (e.g., a PCI bus). The interface 611 mayinclude separate input and output interfaces, or may be a unifiedinterface supporting both operations. When acting under the control ofappropriate software or firmware, the processor 601 is responsible forsuch tasks such as optimization. Various specially configured devicescan also be used in place of a processor 601 or in addition to processor601. The complete implementation can also be done in custom hardware.The communications interface 611 is typically configured to send andreceive data packets or data segments over a network. Particularexamples of interfaces the device supports include Ethernet interfaces,frame relay interfaces, cable interfaces, DSL interfaces, token ringinterfaces, and the like. The storage device 605 is configured to storeinformation on one or more non-transitory storage media such as a harddisk or network attached storage system. In addition, various veryhigh-speed interfaces may be provided such as fast Ethernet interfaces,Gigabit Ethernet interfaces, ATM interfaces, HSSI interfaces, POSinterfaces, FDDI interfaces and the like. Generally, these interfacesmay include ports appropriate for communication with the appropriatemedia. In some cases, they may also include an independent processorand, in some instances, volatile RAM. The independent processors maycontrol such communications intensive tasks as packet switching, mediacontrol and management.

According to particular example embodiments, the system 600 uses memory603 to store data and program instructions and maintained a local sidecache. The program instructions may control the operation of anoperating system and/or one or more applications, for example. Thememory or memories may also be configured to store received metadata andbatch requested metadata.

Because such information and program instructions may be employed toimplement the systems/methods described herein, the present inventionrelates to tangible, machine readable media that include programinstructions, state information, etc. for performing various operationsdescribed herein. Examples of machine-readable media include hard disks,floppy disks, magnetic tape, optical media such as CD-ROM disks andDVDs; magneto-optical media such as optical disks, and hardware devicesthat are specially configured to store and perform program instructions,such as read-only memory devices (ROM) and programmable read-only memorydevices (PROMs). Examples of program instructions include both machinecode, such as produced by a compiler, and files containing higher levelcode that may be executed by the computer using an interpreter.

FIG. 7 illustrates a method 700 for standardized image viewidentification, performed in accordance with one or more embodiments.According to various embodiments, the method 700 may be performed on acomputing device such as a client machine or remote server. As discussedherein, object pose detection may be used to facilitate operations suchas standardized image view identification.

At 702, a request is received to identify one or more standardizedimages from a set of input images. In some implementations, the inputimages may be captured by a conventional camera. Alternately, the inputimages may be captured by a smartphone camera. According to variousembodiments, the set of images may be included in a multi-view capture.

In some embodiments, the input images may include supplementary datasuch as data collected from an inertial measurement unit (IMU). Suchdata may include measurements originating from a gyroscope and/or anaccelerometer such as orientation, location, and/or accelerationinformation.

An input image is selected for analysis at 704. According to variousembodiments, images may be selected for analysis in sequence, inparallel, at random, or in any suitable order.

One or more object components in the selected image are identified at706. In some implementations, an object component may be identified atleast in part via a neural network. For example, the selected image maybe used as an input to a neural network which was trained ondomain-specific data and identifies points on each image that locatesalient parts of the images. When used on vehicles for example, thenetwork may be trained to recognize wheels, lights, and parts of theframe.

According to various embodiments, the identification of objectcomponents may yield one or more annotated images. In an annotatedimage, identified components may be mapped to 2D coordinates and/orframe numbers within the image-set.

An example of an object component identification procedure is shown inFIG. 8 . An input image at 802 is provided as input to a neural network804, which results in an annotated image with identified components at806.

Camera pose information for the selected input image is determined at708. According to various embodiments, the camera poses may be extractedusing a computer vision algorithm. Additional details regarding thedetermination of pose (also referred to herein as viewpoint) arediscussed throughout the application, for instance with respect to FIGS.1 and 2 .

According to various embodiments, camera pose information may beestimated for a viewpoint in order to associate each image in a sequenceof images with a viewpoint. Camera-poses may be estimated by analgorithm that uses the images and, optionally, additional informationreceived from the capturing device. Such information may include angle,location, acceleration, velocity, or other such data collected from agyroscope, an accelerometer, or other such sensor associated with thecamera. The collection of one or more such sensors in a device isreferred to herein as an inertial measurement unit (IMU), and the datacollected from such sensors is referred to as IMU data. Such input datamay be used to facilitate the determination of camera pose informationusing a bundle adjustment procedure. The estimated poses provideinformation about the relative position of the camera towards the objectof interest.

An example of camera pose detection is shown at 808. Based oninformation such as the location of the image components (e.g., theright rear wheel, the right front wheel, and the right headline), thesystem may determine that the image was captured from a designatedlocation on the right side of the vehicle.

A determination is made at 710 as to whether to select an additionalinput image for analysis. According to various embodiments, images maycontinue to be selected for analysis until all images have beenanalyzed. Alternately, images may continue to be selected until each ofa designated set of standardized images have been selected.

A 3D skeleton of the object is created at 712. According to variousembodiments, creating a 3D skeleton may involve using the location ofthe components in the image set identified at 706 along with the camerapose information determined at 706. The skeleton computed in 3D spacemay be projected to the frames of the image-set by using the inferred 3Dpositions and camera poses. An example of 3D skeleton generation isshown in 810 in FIG. 8 .

One or more individual panels for the object are generated at 714. Insome implementations, based on information such as on thethree-dimensional skeleton and the camera poses, the system may generatea set of standardized images using a domain-specific rule set. Thedomain-specific rule set may designate one or more viewpoints.

In some embodiments, the domain-specific rule set may also designate aregion crop associated with a viewpoint. The region crop may identify aportion of a component to include in a standardized image associatedwith the viewpoint.

According to various embodiments, each individual panel may include oneor more views of the object or parts of the object. A panel may includean entire image selected from the set of input images. Alternately, thepanel may include a cropped portion of one or more images.

An example rule for generating a panel of a front wheel of a vehicle maybe defined as follows. In the following pseudocode, the front wheelpositioned is determined by first identifying images with a suitabletop-down viewing angle. Then, the wheel position is identified, and thecrop area determined based on the wheel location in the image and thedistance between the front and back wheel. An example of an applicationof such a rule is shown at 812 in FIG. 8 . The image at 812 shows astandardized view of the front wheel.

-   -   RULE generate_front_wheel_panel:        -   FORALL poses WITH top_down_angle BETWEEN (60°, 120°):            -   img=GET_IMAGE_OF_POSE(pose)            -   p=GET_WHEEL_POSITION_ON_POSE(pose)            -   cx=0.3*HDISTANCE(pose,FRONT_WHEEL,BACK_WHEEL)            -   cy=0.4*VDISTANCE(pose,FRONT_WHEEL,FRONT_ROOF)            -   ADD_TO_PANEL(CROP(img,p,cx,cy))

In particular embodiments, a number of standardized views of a singlecomponent may be combined to create a localized multi-view of thatcomponent. For example, standardized views of the front wheel shown at812 may be captured from different viewpoints, and these differentstandardized viewpoints may be combined to create a multi-view of thewheel.

In some implementations, a machine learning algorithm may be trained todetect a bounding box around a component of an object (e.g., a part orpanel of a vehicle) that is to be represented via a standardized image.After estimating the bounding box for a specific component in an inputimage or in a multi-view representation, the area within the boundingbox may be extracted and presented as a result. In particularembodiments, such techniques may be applied to object interiors as wellas object exteriors.

The one or more individual panels are stored on a storage device at 716.According to various embodiments, the panels may be stored as anewly-created image-set. Alternately, or additionally, the panels may bestored as an image-sequence which may be subject to video playback. Insome implementations, the one or more individual panels may betransmitted to a remote location via a network, such as to a remoteserver or to a client machine.

According to various embodiments, the operations performed in FIG. 7 orin other methods described herein may be used to extract standardizedviews from a video. For example, a 360-degree view of a vehicle may beused as input to extract views of the vehicle at 45-degree angles aroundthe vehicle. In such a configuration, a crop of the image may containthe entire object. The bounding box of the object inside the image maybe obtained at least in part with a neural network for object detection.Alternately, the bounding box of the object inside the image may beobtained at least in part directly from the 3D skeleton determined at712, which may be re-projected onto one or more frames.

According to various embodiments, one or more of the operations shown inFIG. 7 or in other methods described herein may be performed in an orderdifferent than that shown. For example, camera pose information may bedetermined at 708 before, after, or in parallel to the identification ofthe one or more object components at 706.

The method 700 is described as involving the estimation of a 3D skeletonof an object. However, according to various embodiments, a 2D skeletonmay be estimated from an input image or from each viewpoint of amulti-view representation. Then, the areas to extract may be definedrelative to the joint locations of the skeleton. The joint locations maybe treated as salient keypoints that a machine learning algorithm istrained to detect.

According to various embodiments, the method 700 shown in FIG. 7 andother methods described herein may be applied to capture viewpoints fromthe interior of an object.

In particular embodiments, when the input data includes a multi-viewrepresentation, points near the locations that are to be extracted maybe tracked across images. Such point tracking may facilitate thesmoothing of the location of the area to extract and/or the constructionof a multi-view crop that is more stable than would otherwise be thecase.

Although particular features have been described as part of each examplein the present disclosure, any combination of these features oradditions of other features are intended to be included within the scopeof this disclosure. Accordingly, the embodiments described herein are tobe considered as illustrative and not restrictive. Furthermore, althoughmany of the components and processes are described above in the singularfor convenience, it will be appreciated by one of skill in the art thatmultiple components and repeated processes can also be used to practicethe techniques of the present disclosure.

While the present disclosure has been particularly shown and describedwith reference to specific embodiments thereof, it will be understood bythose skilled in the art that changes in the form and details of thedisclosed embodiments may be made without departing from the spirit orscope of the invention. Specifically, there are many alternative ways ofimplementing the processes, systems, and apparatuses described. It istherefore intended that the invention be interpreted to include allvariations and equivalents that fall within the true spirit and scope ofthe present invention.

1. A method comprising: identifying via a processor a plurality ofreference points by applying a neural network to a plurality oftwo-dimensional (2D) images of a vehicle, each of the 2D images beingcaptured from a respective camera viewpoint by a handheld visible lightcamera as the handheld visible light camera moves along a path throughspace, each reference point corresponding with a respective first one ormore locations in the 2D images; determining via the processor arespective second location in a reference space for each reference pointbased on the first one or more locations; determining via the processora 3D skeleton of the vehicle based at least in part on the secondlocations in the reference space; determining via the processor a poseof the vehicle for a designated camera viewpoint based on the 3Dskeleton; and storing the pose on a storage device.
 2. The methodrecited in claim 1, further comprising: characterizing, using the pose,damage to the vehicle as part of a vehicle rental or purchase process.3. The method recited in claim 1, further comprising: using the pose,automatically generating a panel of a component of the vehicle, thepanel comprising a plurality of views of the component of the vehicle;and storing the panel on a storage device.
 4. The method recited inclaim 1, wherein the pose includes three translation values identifyinga location of the vehicle in the reference space relative to thedesignated camera viewpoint.
 5. The method recited in claim 1, whereinthe vehicle is a vehicle, and wherein the 3D skeleton includes a doorand a windshield.
 6. The method recited in claim 5, wherein thereference points include a headlight portion, a rear-view mirrorportion, and a wheel portion.
 7. The method recited in claim 1, whereinthe neural network is pretrained to segment vehicles into components. 8.The method recited in claim 1, wherein the neural network is pretrainedto classify vehicle components.
 9. The method recited in claim 1, themethod further comprising: determining a vehicle type by applying avehicle recognition network to one or more of the plurality of 2Dimages.
 10. The method recited in claim 9, the method furthercomprising: identifying a pre-determined 3D mesh corresponding with thevehicle type.
 11. The method recited in claim 1, wherein the respectivesecond locations are determined at least in part based on positioningone or more of the reference points within a pre-determined 3D mesh. 12.The method recited in claim 1, wherein the plurality of 2D images form amulti-view capture constructed based on inertial measurement unit (IMU)data and navigable in three dimensions.
 13. A system configured toperform a method, the method comprising: identifying via a processor aplurality of reference points by applying a neural network to aplurality of two-dimensional (2D) images of a vehicle, each of the 2Dimages being captured from a respective camera viewpoint by a handheldvisible light camera as the handheld visible light camera moves along apath through space, each reference point corresponding with a respectivefirst one or more locations in the 2D images; determining via theprocessor a respective second location in a reference space for eachreference point based on the first one or more locations; determiningvia the processor a 3D skeleton of the vehicle based at least in part onthe second locations in the reference space; determining via theprocessor a pose of the vehicle for a designated camera viewpoint basedon the 3D skeleton; and storing the pose on a storage device.
 14. Thesystem recited in claim 13, the method further comprising: determining arespective bounding box around the vehicle for one or more of theplurality of 2D images.
 15. The system recited in claim 13, wherein thepose includes a roll value, a pitch value, and a yaw value for thevehicle relative to the designated camera viewpoint, and wherein thepose includes three translation values identifying a location of thevehicle in the reference space relative to the designated cameraviewpoint.
 16. The system recited in claim 13, wherein the vehicle is avehicle, and wherein the 3D skeleton includes a door and a windshield,and wherein the reference points include a headlight portion, arear-view mirror portion, and a wheel portion.
 17. The system recited inclaim 13, wherein the neural network is pretrained to segment vehicle sinto components and to classify vehicle components.
 18. The systemrecited in claim 13, the method further comprising: determining avehicle type by applying a vehicle recognition network to one or more ofthe plurality of 2D images; and identifying a pre-determined 3D meshcorresponding with the vehicle type.
 19. The system recited in claim 13,wherein the respective second locations are determined at least in partbased on positioning one or more of the reference points within apre-determined 3D mesh.
 20. One or more computer readable media havinginstructions stored thereon for performing a method, the methodcomprising: identifying via a processor a plurality of reference pointsby applying a neural network to a plurality of two-dimensional (2D)images of a vehicle, each of the 2D images being captured from arespective camera viewpoint by a handheld visible light camera as thehandheld visible light camera moves along a path through space, eachreference point corresponding with a respective first one or morelocations in the 2D images; determining via the processor a respectivesecond location in a reference space for each reference point based onthe first one or more locations; determining via the processor a 3Dskeleton of the vehicle based at least in part on the second locationsin the reference space; determining via the processor a pose of thevehicle for a designated camera viewpoint based on the 3D skeleton; andstoring the pose on a storage device.